package com.carrental.rental.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.carrental.rental.dto.VehicleInspectionDTO;
import com.carrental.rental.entity.VehicleInspection;
import com.carrental.rental.vo.VehicleInspectionVO;

import java.util.List;

/**
 * 车辆检查记录服务接口
 */
public interface VehicleInspectionService extends IService<VehicleInspection> {

    /**
     * 创建车辆检查记录
     *
     * @param inspectionDTO 车辆检查记录DTO
     * @return 检查记录ID
     */
    Long createInspection(VehicleInspectionDTO inspectionDTO);

    /**
     * 根据ID获取车辆检查记录详情
     *
     * @param id 检查记录ID
     * @return 车辆检查记录VO
     */
    VehicleInspectionVO getInspectionById(Long id);

    /**
     * 根据订单ID获取车辆检查记录列表
     *
     * @param orderId 订单ID
     * @return 车辆检查记录VO列表
     */
    List<VehicleInspectionVO> getInspectionsByOrderId(Long orderId);

    /**
     * 根据订单ID和检查类型获取车辆检查记录
     *
     * @param orderId        订单ID
     * @param inspectionType 检查类型（1-取车检查，2-还车检查）
     * @return 车辆检查记录VO
     */
    VehicleInspectionVO getInspectionByOrderIdAndType(Long orderId, Integer inspectionType);

    /**
     * 分页查询车辆检查记录
     *
     * @param page           分页参数
     * @param orderNo        订单号
     * @param vehicleId      车辆ID
     * @param inspectionType 检查类型
     * @param startTime      开始时间
     * @param endTime        结束时间
     * @return 分页车辆检查记录VO
     */
    Page<VehicleInspectionVO> pageInspections(Page<VehicleInspection> page, String orderNo, Long vehicleId, Integer inspectionType, String startTime, String endTime);

    /**
     * 用户确认检查记录
     *
     * @param id           检查记录ID
     * @param userSignature 用户签名图片URL
     * @return 是否成功
     */
    boolean userConfirmInspection(Long id, String userSignature);

    /**
     * 更新车辆检查记录
     *
     * @param inspectionDTO 车辆检查记录DTO
     * @return 是否成功
     */
    boolean updateInspection(VehicleInspectionDTO inspectionDTO);
} 